home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 60750 / 60750.xpi / chrome / chromeFiles / content / bindings / btsearchbar3.xml < prev    next >
Text File  |  2010-01-20  |  4KB  |  110 lines

  1. <bindings
  2.       xmlns="http://www.mozilla.org/xbl"
  3.       xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  4.       xmlns:xbl="http://www.mozilla.org/xbl">
  5.  
  6.   <binding id="btsearchbar">
  7.     <resources>
  8.       <stylesheet src="btsearchtextbox.css"/>
  9.     </resources>
  10.     <content>
  11.       <xul:textbox class="bt_searchbar_textbox3"
  12.                    anonid="textbox"
  13.                    type="autocomplete">
  14.       </xul:textbox>
  15.       <xul:button class="bt_searchbar_button"
  16.                   anonid="button">
  17.       </xul:button>
  18.       
  19.     </content>
  20.     
  21.     <handlers>
  22.       <handler event="command"><![CDATA[
  23.         switch (event.originalTarget.getAttribute("anonid")) {
  24.           case "button":
  25.             this.handleSearchCommand(event);
  26.             break;
  27.         }
  28.        ]]>
  29.       </handler>
  30.     </handlers>
  31.     
  32.     <implementation>
  33.         <constructor>
  34.             <![CDATA[
  35.             if (this.hasAttribute('brand')) {
  36.               this.observerService = Components.classes["@mozilla.org/observer-service;1"]
  37.                                                .getService(Components.interfaces.nsIObserverService)
  38.  
  39.               this.brandObject = BrandThunder.clients[this.getAttribute('brand')];
  40.             }
  41.             ]]>
  42.         </constructor>
  43.       <field name="observerService"/>
  44.       <method name="handleSearchCommand">
  45.         <parameter name="event"/>
  46.         <parameter name="text"/>
  47.         <body><![CDATA[
  48.           if (!text) {
  49.             text = document.getAnonymousElementByAttribute(this, "anonid", "textbox").value;
  50.           }
  51.           var searchSvc = Components.classes["@mozilla.org/browser/search-service;1"]
  52.                                     .getService(Components.interfaces.nsIBrowserSearchService);
  53.           var engineToUse;
  54.           var additionalChars = "";
  55.           var defaultEngine = searchSvc.getEngineByName(this.brandObject.defaultSearchEngine.replace(" - BT",""));
  56.           if (this.hasAttribute("engine")) {
  57.             engineToUse = searchSvc.getEngineByName(this.getAttribute("engine"));
  58.           }
  59.           if (!engineToUse) {
  60.             if (searchSvc.currentEngine.description.match(" - BT")) {
  61.               engineToUse = searchSvc.currentEngine;
  62.             } else if (defaultEngine) {
  63.               engineToUse = defaultEngine;
  64.             } else {
  65.               /* Try to find another BT engine to use */
  66.               var bingEngine = searchSvc.getEngineByName("Bing");
  67.               var askEngine = searchSvc.getEngineByName("Ask");
  68.               var yahooEngine = searchSvc.getEngineByName("Yahoo");
  69.               if (bingEngine && bingEngine.description.match(" - BT")) {
  70.                 engineToUse = bingEngine;
  71.               } else if (askEngine && askEngine.description.match(" - BT")) {
  72.                 engineToUse = askEngine;
  73.               } else if (yahooEngine && yahooEngine.description.match(" - BT")) {
  74.                 engineToUse = yahooEngine;
  75.               } else {
  76.                 engineToUse = searchSvc.currentEngine;
  77.               }
  78.             }
  79.           }
  80.  
  81.           if (engineToUse.description == "Yahoo! - BT") {
  82.             additionalChars = "L";            
  83.           }
  84.           if (this.hasAttribute("version")) {
  85.             if (this.observerService) {
  86.               var subject = {};
  87.               subject.wrappedJSObject = this.brandObject;
  88.               this.observerService.notifyObservers(subject, "brandthunder", "bt-" + this.brandObject.shortName + "-searchbartest-" + this.getAttribute("version"));
  89.             }
  90.           }
  91.           var submission = engineToUse.getSubmission(text, null);
  92.           openUILinkIn(submission.uri.spec + additionalChars, "tab", null, submission.postData);
  93.         ]]></body>
  94.       </method>
  95.     </implementation>
  96.   </binding>
  97.  
  98.   <binding id="bt-searchbar-textbox"
  99.       extends="chrome://global/content/bindings/autocomplete.xml#autocomplete">
  100.     <implementation>
  101.       <method name="onTextEntered">
  102.         <parameter name="event"/>
  103.         <body><![CDATA[
  104.           document.getBindingParent(this).handleSearchCommand(event, this.value);
  105.         ]]></body>
  106.       </method>
  107.     </implementation>
  108.   </binding>
  109. </bindings>
  110.